package main

import (
	"fmt"
	"sync"
	"time"
)

var wg sync.WaitGroup

// var stop bool //使用全局变量形式
var stop chan bool = make(chan bool) //使用channel方式
// 以上两种是较常规方式
// 在go 1.7 后可以使用context方式

func cpuinfo() {
	defer wg.Done()
	for {
		select {
		case <-stop:
			fmt.Println("退出cpu监控!")
			return
		default:
			time.Sleep(time.Second * 2)
			fmt.Println("cpu信息读取成功！")
		}

	}

}
func main() {
	// 现在模拟启动一个goroutine去监控某台计算器的cpu使用情况
	wg.Add(1)
	// 父content
	// ctx,cancel := context.WithCancel(context.Background)
	go cpuinfo()
	// 现在想中断这个cpu监控进程 比如6秒后终止监控
	time.Sleep(time.Second * 6)
	stop <- true
	wg.Wait()
}
